iT邦幫忙

2025 iThome 鐵人賽

DAY 30
1
DevOps

Vibe Coding 後的挑戰:Locust x Loki 負載及監控系列 第 30

Day30 - 終點與起點:一趟從壓力測試到全方位可觀測性的旅程

  • 分享至 

  • xImage
  •  

三十天前,我們懷著一個單純的目標啟程:學習如何使用 Locust 這款強大的開源工具來對我們的應用程式進行壓力測試。我們從 locustfile.py 的基礎寫法開始,學習模擬使用者行為、分配任務權重,並透過 Locust 的 Web UI 和命令列工具來執行測試、解讀報告。

然而,這趟旅程很快就超越了「壓力測試」本身的範疇,帶領我們進入一個更廣闊、更深刻的領域:系統可觀測性(Observability)

旅程的回顧:從點到面的演進

我們的探索之路,大致可以分為四個階段:

第一階段:掌握壓力測試(Locust)

我們專注於 Locust 的核心功能,學會了如何量化系統的效能極限。但我們很快就發現,知道「系統在 1000 個並發用戶時會變慢」是不夠的,我們更需要知道「為什麼會變慢」。

第二階段:引入日誌聚合(Loki)

為了解答「為什麼」,我們引入了 Grafana Loki。透過在我們的環境中部署 Loki,並讓應用程式將日誌發送給它,我們首次能夠將壓力測試期間的系統行為(應用日誌)與測試結果關聯起來。透過 LogQL,我們學會了如何在數以萬計的日誌中,精準地篩選出錯誤訊息和關鍵線索。

第三階段:擁抱指標監控(Prometheus & Mimir)

日誌提供了詳細的「事件」記錄,但我們還需要更宏觀的「狀態」視圖。於是,Prometheus 和 Grafana Mimir 進入了我們的視野。我們學會了如何讓應用程式暴露指標(Metrics),並使用 Prometheus 進行收集,再由 Mimir 進行長期儲存。CPU 使用率、記憶體消耗、API 回應延遲... 這些量化的指標讓我們對系統的健康狀況有了更全面的了解。

第四階段:深入程式碼效能(Pyroscope)

即使有了日誌和指標,有時效能瓶頸仍然深藏在程式碼的細節之中。Day 29,我們引入了最後一塊,也是最精細的一塊拼圖:Grafana Pyroscope。透過持續性效能分析,我們獲得了直達程式碼層級的火焰圖,能夠清晰地看到哪個函式、哪一行程式碼佔用了最多的 CPU 資源。這為我們提供了終極的優化依據。

而將這一切串連起來的神經中樞,正是 Grafana。它不僅是個儀表板,更是我們整合日誌、指標和效能剖析數據的統一平台,讓我們能從單一窗口洞察系統的全貌。

核心收穫:可觀測性驅動的效能工程

回首這三十天,我們最大的收穫,是建立了一套現代化的效能工程思維:

效能工程不再是孤立的測試環節,而是與開發、維運緊密結合,由數據驅動的持續性活動。它的核心是建立一個強大的可觀測性平台,讓我們能隨時提出關於系統的任何問題,並從日誌、指標和追蹤(Traces/Profiles)中找到答案。

展望未來:你的下一段旅程

這三十天的馬拉松是終點,但更是你個人技術旅程的新起點。接下來,你可以嘗試:

  • 整合到 CI/CD:將 Locust 測試和可觀測性分析納入你的自動化建置流程中。
  • 設定告警:在 Grafana 中針對關鍵指標(如錯誤率、延遲)設定告警,主動發現問題。
  • 探索分散式追蹤:研究如 Jaeger 或 Tempo 等工具,補全可觀測性的「三大支柱」。
  • 實踐於真實專案:將這套方法論應用到你的工作或個人專案中,感受它帶來的價值。

感謝你堅持走完這三十天的旅程。希望這段經歷能為你打開一扇新的大門,讓你更有信心地去打造更穩定、更高效、更可靠的軟體系統。

旅程未完,探索不止。我們下一段冒險再會!


上一篇
Day29 - 持續性效能分析:Grafana Pyroscope 入門
系列文
Vibe Coding 後的挑戰:Locust x Loki 負載及監控30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言